package com.vue3.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.vue3.blog.common.resp.PageVO;
import com.vue3.blog.domain.dto.ArticleDTO;
import com.vue3.blog.domain.dto.ArticleQueryDTO;
import com.vue3.blog.domain.entity.ArticleEntity;
import com.vue3.blog.domain.vo.ArticleDetailVO;

import java.util.List;
import java.util.Map;

/**
 * @author Mr.小朱同学
 * @version 1.0.0
 * @date 2025/6/9 19:10
 * @description 博客文章
 */
public interface IArticleService extends IService<ArticleEntity> {
    /**
     * 保存文章
     */
    void saveArticle(ArticleDTO dto);

    /**
     * 删除文章
     *
     * @param id 文章ID
     */
    void removeArticle(Long id);

    /**
     * 获取文章详情
     *
     * @param id 文章ID
     */
    ArticleDetailVO getArticleDetail(Long id);

    /**
     * 获取上一篇、下一篇文章
     *
     * @param id 文章ID
     */
    Map<String, ArticleDetailVO> getPrevNextArticle(Long id);

    /**
     * 文章列表
     */
    PageVO<ArticleDetailVO> getArticleList(ArticleQueryDTO dto);

    /**
     * 获取最新发布的6篇文章
     */
    List<ArticleDetailVO> getNewArticleList();

    /**
     * 统计文章数量
     */
    Long getArticleCount(Integer... status);
}